包名 结绳.JVM

@指代类("java.util.Iterable")
类 可枚举类<模板类型1>
结束 类

/*
可枚举类对象的枚举器
*/
@指代类("java.util.Iterator")
类 枚举器
	/*
	判断枚举器是否还有下一个元素
	*/
	属性读 还有下一个() : 逻辑型
		code return #this.hasNext();
	结束 属性

	/*
	获取枚举器下一个元素
	*/
	属性读 下一个() : 对象
		code return #this.next();
	结束 属性
结束 类

@指代类("java.util.ArrayList")
类 集合模板类<模板类型1> : 可枚举类

	@运算符重载
	方法 =(成员 : 模板类型1[])
		@code
//		if(#成员 == null) return null;
		java.util.ArrayList<#<@模板类型1>> list = new java.util.ArrayList<>(#成员.length);
		for(#<@模板类型1> el : #成员) {
			list.add(el);
		}
		return list;
		@end
	结束 方法

	@运算符重载
	方法 [](索引 : 整数) : 模板类型1
		返回 取成员(索引)
	结束 方法

	@运算符重载
	方法 []=(索引 : 整数,值 : 模板类型1)
		置成员(索引, 值)
	结束 方法

	@运算符重载
	方法 ?(值 : 模板类型1) : 逻辑型
		返回 是否存在(值)
	结束 方法

	方法 是否为空() : 逻辑型
		code return #this.isEmpty();
	结束 方法

	方法 添加成员(成员 : 模板类型1)
		code #this.add(#成员);
	结束 方法

	方法 插入成员(索引 : 整数,成员 : 模板类型1)
		code #this.add(#索引,#成员);
	结束 方法

	方法 置成员(索引 : 整数,成员 : 模板类型1)
		code #this.set(#索引,#成员);
	结束 方法

	方法 取成员(索引 : 整数) : 模板类型1
		code return #this.get(#索引);
	结束 方法

	方法 是否存在(成员 : 模板类型1) : 逻辑型
		code return #this.contains(#成员);
	结束 方法

	方法 寻找成员(成员 : 模板类型1) : 整数
		code return #this.indexOf(#成员);
	结束 方法

	//清空集合
	方法 清空()
		code #this.clear();
	结束 方法

	//删除指定索引处成员
	方法 删除成员(索引 : 整数)
		code #this.remove(#索引);
	结束 方法

	//删除指定成员对象
	方法 删除成员2(成员 : 模板类型1)
		code #this.remove(#成员);
	结束 方法

	/*
	将集合转为数组
	*/
	方法 到数组() : 模板类型1[]
		code return #this.toArray(new #<@模板类型1>[0]);
	结束 方法

	方法 打乱集合()
		@code
		for (int i = 0,max = #this.size() - 1;i < max;i++) {
			if (System.nanoTime() % 2 == 0) {
				#<@模板类型1> tmp = #this.get(i);
				#this.set(i, #this.get(i + 1));
				#this.set(i + 1, tmp);
			}
		}
		@end
	结束 方法

	属性读 长度() : 整数
		code return #this.size();
	结束 属性

	/*
	获取枚举器，可用于迭代循环
	*/
	属性读 枚举器() : 枚举器
		code return #this.iterator();
	结束 属性
结束 类

类 集合 : 集合模板类<对象>
结束 类

类 整数集合 : 集合模板类<整数类>
结束 类

类 文本集合 : 集合模板类<文本>
结束 类

@指代类("java.util.Map")
类 可枚举条目类<模板类型1>
结束 类

@指代类("java.util.HashMap")
类 哈希表模板类<模板类型1,模板类型2> : 可枚举条目类
	@运算符重载
	方法 [](键 : 模板类型1) : 模板类型2
		返回 取项目(键)
	结束 方法

	@运算符重载
	方法 []=(键 : 模板类型1, 值 : 模板类型2)
		添加项目(键, 值)
	结束 方法

	@运算符重载
	方法 ?(键 : 模板类型1) : 逻辑型
		返回 是否存在(键)
	结束 方法

	方法 添加项目(键 : 模板类型1,值 : 模板类型2)
		code #this.put(#键, #值);
	结束 方法

	方法 删除项目(键 : 模板类型1)
		code #this.remove(#键);
	结束 方法

	方法 取项目(键 : 模板类型1) : 模板类型2
		code return #this.get(#键);
	结束 方法

	方法 是否存在(键 : 模板类型1) : 逻辑型
		code return #this.containsKey(#键);
	结束 方法

	方法 清空()
		code #this.clear();
	结束 方法

	属性读 长度() : 整数
		code return #this.size();
	结束 属性
结束 类

类 哈希表 : 哈希表模板类<对象, 对象>
结束 类

类 文本到对象哈希表 : 哈希表模板类<文本, 对象>
结束 类

类 文本到文本哈希表 : 哈希表模板类<文本, 文本>
结束 类

类 文本到整数哈希表 : 哈希表模板类<文本, 整数类>
结束 类

类 整数到文本哈希表 : 哈希表模板类<整数类, 文本>
结束 类

类 整数到整数哈希表 : 哈希表模板类<整数类, 整数类>
结束 类

/*
键值对类，提供键值对存储功能
*/
@禁止创建对象
类 键值对
	变量 键 : 对象?
	变量 值 : 对象?

	@运算符重载
	方法 =(键 : 对象, 值 : 对象)
		本对象.键 = 键
		本对象.值 = 值
	结束 方法
	
	//格式: 键=值
	@虚拟方法
	方法 到文本() : 文本
		返回 键 + "=" + 值
	结束 方法
	
	//格式: (键,值)
	方法 到文本2() : 文本
		返回 "("+键+","+值+")"
	结束 方法
	
	/*
	返回的值支持自定义格式，返回格式化之后的键值对文本值
	输出格式有且仅有两个占位符 不能多也不能少
	使用示例：到格式文本("%s的值为:%s")
	常用参数: %d为整数 %s为文本(字符串) %b小写逻辑值true/false %B大写逻辑值TRUE/FALSE等等
	返回结果 键的值为:值
	*/
	方法 到格式文本(输出格式 : 文本) : 文本
		返回 格式化文本(输出格式,{键,值})
	结束 方法

结束 类

/*
坐标类，提供坐标信息存储功能
*/
@禁止创建对象
类 坐标
	变量 横坐标 : 整数?
	变量 纵坐标 : 整数?

	@运算符重载
	方法 =(横坐标 : 整数, 纵坐标 : 整数)
		本对象.横坐标 = 横坐标
		本对象.纵坐标 = 纵坐标
	结束 方法

	/*
	与另一个坐标相加，获得新坐标
	*/
	@运算符重载
	方法 +(另一个坐标 : 坐标) : 坐标
		变量 新的横坐标 : 整数 = 横坐标 + 另一个坐标.横坐标
		变量 新的纵坐标 : 整数 = 纵坐标 + 另一个坐标.纵坐标
		变量 新坐标 : 坐标 = (新的横坐标,新的纵坐标)
		返回 (新坐标)
	结束 方法

	/*
	与另一个坐标相减，获得新坐标
	*/
	@运算符重载
	方法 -(另一个坐标 : 坐标) : 坐标
		变量 新的横坐标 : 整数 = 横坐标 - 另一个坐标.横坐标
		变量 新的纵坐标 : 整数 = 纵坐标 - 另一个坐标.纵坐标
		变量 新坐标 : 坐标 = (新的横坐标,新的纵坐标)
		返回 (新坐标)
	结束 方法
	
	@虚拟方法
	方法 到文本() : 文本
		返回 "("+横坐标+","+纵坐标+")"
	结束 方法
结束 类

@指代类("java.util.ArrayDeque")
类 双端队列模板类<模板类型1> : 可枚举类<模板类型1>

	属性读 长度() : 整数
		code return #this.size();
	结束 属性

	属性读 枚举器() : 枚举器
		code return #this.iterator();
	结束 属性

	方法 添加成员至头部(成员 : 模板类型1) : 逻辑型
		code return #this.offerFirst(#成员);
	结束 方法

	方法 添加成员至尾部(成员 : 模板类型1) : 逻辑型
		code return #this.offerLast(#成员);
	结束 方法

	方法 弹出首成员() : 模板类型1
		code return #this.pollFirst();
	结束 方法

	方法 弹出尾成员() : 模板类型1
		code return #this.pollLast();
	结束 方法

	方法 获取首成员() : 模板类型1
		code return #this.peekFirst();
	结束 方法

	方法 获取尾成员() : 模板类型1
		code return #this.peekLast();
	结束 方法

	方法 清空()
		code #this.clear();
	结束 方法

结束 类

类 双端队列 : 双端队列模板类<对象>

	@静态
	方法 从集合创建(集合1 : 集合) : 双端队列
		code return new java.util.ArrayDeque(#集合1);
	结束 方法

结束 类

类 整数双端队列 : 双端队列模板类<整数类>
结束 类

类 文本双端队列 : 双端队列模板类<文本>
结束 类

@指代类("java.util.Stack")
类 栈模板类<模板类型1> : 可枚举类<模板类型1>

	属性读 长度() : 整数
		code return #this.size();
	结束 属性

	属性读 枚举器() : 枚举器
		code return #this.iterator();
	结束 属性

	方法 出栈() : 模板类型1
		code return #this.pop();
	结束 方法

	方法 压栈(成员 : 模板类型1)
		code #this.push(#成员);
	结束 方法

	方法 取栈顶成员() : 模板类型1
		code return #this.peek();
	结束 方法

	方法 清空()
		code #this.clear();
	结束 方法

结束 类

类 栈 : 栈模板类<对象>
结束 类

类 整数栈 : 栈模板类<整数类>
结束 类

类 文本栈 : 栈模板类<文本>
结束 类